home *** CD-ROM | disk | FTP | other *** search
/ Ham Radio 2000 #1 / Ham Radio 2000.iso / ham2000 / tcp_ip / wnos / wn941101 / kissdump.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-08-10  |  1.9 KB  |  114 lines

  1. #include "global.h"
  2. #include "config.h"
  3. #include "mbuf.h"
  4. #include "kiss.h"
  5. #include "ax25.h"
  6. #include "trace.h"
  7. #ifdef CRCSET
  8. #include "crc.h"
  9. #endif
  10. #include "ip.h"
  11.  
  12. void
  13. ki_dump(fp,bpp,check)
  14. FILE *fp;
  15. struct mbuf **bpp;
  16. int check;
  17. {
  18. #ifdef CRCSET
  19.     int para;
  20.     int  val;
  21.  
  22.         trprintf(fp,"KISS: ");
  23.         if(*bpp && (*(*bpp)->data & 0x80))
  24.             if(check_crc(*bpp)){
  25.                 trprintf(fp," bad CRC!\n");
  26.                 return;
  27.         }else{
  28.             trprintf(fp,"CRC ");
  29.  
  30.     }
  31.  
  32.         para = PULLCHAR(bpp) & 0x7f;
  33.         if (para == KISS_DATA){
  34.             trprintf(fp,"DATA\n");
  35.             ax25_dump(fp,bpp,check);
  36.             return;
  37.  
  38.     }
  39.     val = PULLCHAR(bpp);    
  40. #endif
  41. #ifndef CRCSET
  42.     int port, para, val;
  43.     para = PULLCHAR(bpp);
  44.     port = para >> 4;
  45.  
  46.     if((para & 0x0f) == KISS_DATA) {
  47.         if(port)
  48.             trprintf(fp,"(%d) ",port);
  49.         ax25_dump(fp,bpp,check);
  50.         return;
  51.  
  52.  
  53.     }
  54.  
  55.     val = PULLCHAR(bpp);
  56.     trprintf(fp,"KISS: ");
  57.  
  58. #endif
  59.     switch(para){
  60.     case KISS_TXD:
  61.         trprintf(fp,"TxDelay %lu ms\n",val * 10L);
  62.         break;
  63.     case KISS_P:
  64.         trprintf(fp,"Persistence %u/256\n",val + 1);
  65.         break;
  66.     case KISS_ST:
  67.         trprintf(fp,"SlotTime %lu ms\n",val * 10L);
  68.         break;
  69.     case KISS_TXT:
  70.         trprintf(fp,"TxTail %lu ms\n",val * 10L);
  71.         break;
  72.     case KISS_FD:
  73.         trprintf(fp,"%sduplex\n",val == 0 ? "Half" : "Full");
  74.         break;
  75.     case KISS_HW:
  76.         trprintf(fp,"Hardware %u\n",val);
  77.         break;
  78.     case KISS_RETURN:
  79.         trprintf(fp,"RETURN\n");
  80.         break;
  81.     default:
  82.         trprintf(fp,"code %u arg %u\n",para,val);
  83.         break;
  84.     }
  85. }
  86.  
  87. int
  88. ki_forus(iface,bp)
  89. struct iface *iface;
  90. struct mbuf *bp;
  91. {
  92.     struct mbuf *bpp;
  93.     int i = 0;
  94.  
  95. #ifndef CRCSET
  96.     if((*bp->data & 0x0f) == KISS_DATA){
  97.         if(dup_p(&bpp,bp,1,AXALEN) == AXALEN)
  98.             i = ax_forus(iface,bpp);
  99.             free_p(bpp);
  100.         }
  101.     return i;    
  102. }
  103. #endif
  104. #ifdef CRCSET
  105.         if(bp->data[0] != KISS_DATA)
  106.             return 0;
  107.  
  108.         dup_p(&bpp,bp,1,AXALEN);
  109.             i = ax_forus(iface,bpp);
  110.         free_p(bpp);
  111.     return i;
  112. }
  113. #endif
  114.